﻿using System;
using System.Collections;
using System.Data.SqlClient;
using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;
using VentaElectrodomesticos.Sql;
using VentaElectrodomesticos.Utilities;

namespace VentaElectrodomesticos.AbmUsuario
{
    public partial class FormSeleccionUsuario : Form
    {
        private ClaseSQL sql;

        public FormSeleccionUsuario()
        {
            InitializeComponent();
            sql = new ClaseSQL();

            sql.llenarCombo(this.comboBoxProvincias, "SELECT idProvincia, nomProvincia FROM LAG.provincias");
            sql.llenarCombo(this.comboBoxSucursal, "SELECT idSucursal, direccion FROM LAG.sucursales");
            sql.llenarCombo(this.comboBoxTipo, "select idTipoUsu, nomTipoUsu from LAG.usuarios_tipos");
        }


        private void buttonBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                dataGridView.Rows.Clear();
                sql.Open();

                String condiciones = "";
                condiciones += Utils.agregarCondicionExacta(condiciones, "dni", textBoxDni.Text, true);
                condiciones += Utils.agregarCondicion(condiciones, "nombre", textBoxNombre.Text);
                condiciones += Utils.agregarCondicion(condiciones, "apellido", textBoxApellido.Text);
                condiciones += Utils.agregarCondicionConKeyValue(condiciones, "empl.idProvincia", comboBoxProvincias.SelectedItem);
                condiciones += Utils.agregarCondicionConKeyValue(condiciones, "empl.idSucursal", comboBoxSucursal.SelectedItem);
                condiciones += Utils.agregarCondicionConKeyValue(condiciones, "empl.idTipoUsu", comboBoxTipo.SelectedItem);

                condiciones += Utils.agregarCondicionExacta(condiciones, "empl.statusPersona", "1", false);
                condiciones += Utils.agregarCondicion(condiciones, "password","'XX_aun_sin_pass_XX'", " <> " , "");

                String query = "SELECT nombre,apellido,dni,mail,nomProvincia,suc.direccion,nomTipoUsu,idPersona,empl.ususario,empl.statusUsuario FROM LAG.vw_empleados empl"
                    + " LEFT JOIN LAG.provincias prov ON empl.idProvincia = prov.idProvincia"
                    + " LEFT JOIN LAG.sucursales suc ON empl.idSucursal = suc.idSucursal"
                    + " LEFT JOIN LAG.usuarios_tipos ut ON empl.idTipoUsu = ut.idTipoUsu"
                    + condiciones;


                SqlDataReader reader = sql.busquedaSQLDataReader(query);
                while (reader.Read())
                {
                    dataGridView.Rows.Add(
                        reader["idPersona"],                        
                        reader["nombre"].ToString(),
                        reader["apellido"].ToString(),
                        reader["dni"].ToString(),
                        reader["mail"].ToString(),
                        reader["nomProvincia"].ToString(),
                        reader["direccion"].ToString(),
                        reader["nomTipoUsu"].ToString(),
                        reader["ususario"].ToString(),
                        reader["statusUsuario"].ToString()
                    );
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error al buscar usuario");
            }
            finally
            {
                sql.Close();
            }
        }

        
        private void dataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            // Ignorar clicks que no son en la columna seleccionar 
            if (e.RowIndex < 0 || e.ColumnIndex != dataGridView.Columns["seleccionar"].Index) return;

            sql.Open();
            String sQuery = "SELECT idUsuario, status, usuario, password FROM LAG.usuarios WHERE idUsuario = " + dataGridView.Rows[e.RowIndex].Cells["id"].Value.ToString();
            
            SqlDataReader query = sql.busquedaSQLDataReader(sQuery);

            FormEditarUsuario formEditarUsuario;
            if (query.Read())
            {
                formEditarUsuario = new FormEditarUsuario(query[0].ToString(), //id
                                                          query[1].ToString(), //status
                                                          query[2].ToString(), //usuario
                                                          query[3].ToString()); //password 
                formEditarUsuario.ShowDialog(this);
            }
            
            sql.Close();
            
            
        }

        private void buttonLimpiar_Click(object sender, EventArgs e)
        {
            this.dataGridView.Rows.Clear();
            this.textBoxNombre.Text = null;
            this.textBoxApellido.Text = null;
            this.textBoxDni.Text = null;
            this.comboBoxProvincias.SelectedItem = "";
            this.comboBoxSucursal.SelectedItem = "";
            this.comboBoxTipo.SelectedItem = "";
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            Utils.ClearTextBoxes(groupBox1);
            comboBoxProvincias.SelectedIndex = -1;
            comboBoxSucursal.SelectedIndex = -1;
            comboBoxTipo.SelectedIndex = -1;
            dataGridView.Rows.Clear();
        }
    }
}
